物件導向中,類別是一組具有共同特性的所有物件成員的抽象描述,它的定義描述了該類別物件共同具有的屬性,及實現該物件共同行為的方法。例如對汽車進行抽象分析後,就能大致把它分成下方的樣子。
之後會在舉出更多例子。
在Python中,類別是用關鍵字class定義,語法為下:
class 類別名稱:
#類別建構式
def __init__(self,參數1,參數2,參數3,...):
#設定資料
.
.
.
def 自訂方法(self,參數1,參數2,參數3,...): #可多個
.
.
.
依照慣例,先附上最基礎的例子最好懂
class Dog: #定義Dog類別
def bark(self): #定義方法bark()
print("汪!汪!汪!")
dog = Dog() #建立物件dog
dog.bark() #讓dog呼叫方法bark()
--------------------------------
汪!汪!汪!
據上方程式可知,我們建立一個Dog類別,裡面有可印出狗叫聲的方法。之後下面就是呼叫剛建立的類別方法了,那我們在程式中再增加一個物件屬性name試試:
class Dog:
def bark(self,n):
self.name = n #將n設定值給物件屬性name
print("汪!汪!汪!我是"+self.name+"!")
dog = Dog()
dog.bark("小東")
--------------------------------
汪!汪!汪!我是小東!
上方在利用dog.bark("小東")
呼叫時,需要給一個實際參數「小東」。那麼系統一開始便自動將dog作為第一參數self、「小東」就會排在後面做為第二參數n,傳遞給方法bark()。
__init__()
方法__init__()
方法用於物件的初始化,在類別被產生實體時立刻執行,通常在裡面都放一些不太變動的基本數值,如下:
class Dog:
def __init__(self,name,color): #建構式
self.name = name #name屬性
self.color = color #color屬性
def bark(self):
print("汪!汪!汪!我是"+self.name+"!")
dog = Dog("小東","棕色") #建立物件自動呼叫__init__()方法
print("狗名為:"+dog.name+" 顏色為"+dog.color+"")
dog.bark()
--------------------------------
狗名為:小東 顏色為棕色
汪!汪!汪!我是小東!
類別變數是共用的,它們可以被類別中的所有物件使用,在存活期間,任何物件對它進行的修改都會儲存反映到其他所有物件上;物件變數則是被自己的物件所擁有,即便有名稱相同的物件變數也沒有任何關聯。以下為實例:
class Dog:
count = 0 #類別變數count
def __init__(self,name,color):
self.name = name
self.color = color
Dog.count = Dog.count+1 #要使用就要加上類別名稱(每新增加1)
def bark(self):
print("汪!汪!汪!我是"+self.name+"!")
print ("現在有%d隻狗!"%Dog.count)
dog = Dog("小東","棕色")
dog.bark()
dog2 = Dog("阿黑","黑色")
dog2.bark()
dog3 = Dog("阿白","白色")
dog3.bark()
--------------------------------
汪!汪!汪!我是小東!
現在有1隻狗!
汪!汪!汪!我是阿黑!
現在有2隻狗!
汪!汪!汪!我是阿白!
現在有3隻狗!
接下來要看繼承嚕~